package Q17_05_Letters_and_Numbers; public class QuestionA { public static char[] extractSubarray(char[] array, int start, int end) { if (start > end) return null; char[] subarray = new char[end - start + 1]; for (int i = start; i <= end; i++) { subarray[i - start] = array[i]; } return subarray; } public static boolean hasEqualLettersNumbers(char[] array, int start, int end) { int counter = 0; for (int i = start; i <= end; i++) { if (Character.isLetter(array[i])) { counter++; } else if (Character.isDigit(array[i])) { counter--; } } return counter == 0; } public static char[] findLongestSubarray(char[] array) { for (int len = array.length; len > 1; len--) { for (int i = 0; i <= array.length - len; i++) { if (hasEqualLettersNumbers(array, i, i + len - 1)) { return extractSubarray(array, i, i + len - 1); } } } return null; } public static void main(String[] args) { char b = '1'; char a = 'a'; char[] array = {a, b, a, b, a, b, b, b, b, b, a, a, a, a, a, b, a, b, a, b, b, a, a, a, a, a, a, a}; for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } System.out.println(); char[] max = findLongestSubarray(array); System.out.println(max.length); for (int i = 0; i < max.length; i++) { System.out.print(max[i] + " "); } System.out.println("\nIs Valid? " + hasEqualLettersNumbers(max, 0, max.length - 1)); } }